1,799 research outputs found
Renaming Global Variables in C Mechanically Proved Correct
Most integrated development environments are shipped with refactoring tools.
However, their refactoring operations are often known to be unreliable. As a
consequence, developers have to test their code after applying an automatic
refactoring. In this article, we consider a refactoring operation (renaming of
global variables in C), and we prove that its core implementation preserves the
set of possible behaviors of transformed programs. That proof of correctness
relies on the operational semantics of C provided by CompCert C in Coq.Comment: In Proceedings VPT 2016, arXiv:1607.0183
A class of structured P2P systems supporting browsing
Browsing is a way of finding documents in a large amount of data which is
complementary to querying and which is particularly suitable for multimedia
documents. Locating particular documents in a very large collection of
multimedia documents such as the ones available in peer to peer networks is a
difficult task. However, current peer to peer systems do not allow to do this
by browsing. In this report, we show how one can build a peer to peer system
supporting a kind of browsing. In our proposal, one must extend an existing
distributed hash table system with a few features : handling partial hash-keys
and providing appropriate routing mechanisms for these hash-keys. We give such
an algorithm for the particular case of the Tapestry distributed hash table.
This is a work in progress as no proper validation has been done yet.Comment: 14 page
Views, Program Transformations, and the Evolutivity Problem in a Functional Language
We report on an experience to support multiple views of programs to solve the
tyranny of the dominant decomposition in a functional setting. We consider two
possible architectures in Haskell for the classical example of the expression
problem. We show how the Haskell Refactorer can be used to transform one view
into the other, and the other way back. That transformation is automated and we
discuss how the Haskell Refactorer has been adapted to be able to support this
automated transformation. Finally, we compare our implementation of views with
some of the literature.Comment: 19 page
Invertible Program Restructurings for Continuing Modular Maintenance
When one chooses a main axis of structural decompostion for a software, such
as function- or data-oriented decompositions, the other axes become secondary,
which can be harmful when one of these secondary axes becomes of main
importance. This is called the tyranny of the dominant decomposition. In the
context of modular extension, this problem is known as the Expression Problem
and has found many solutions, but few solutions have been proposed in a larger
context of modular maintenance. We solve the tyranny of the dominant
decomposition in maintenance with invertible program transformations. We
illustrate this on the typical Expression Problem example. We also report our
experiments with Java and Haskell programs and discuss the open problems with
our approach.Comment: 6 pages, Early Research Achievements Track; 16th European Conference
on Software Maintenance and Reengineering (CSMR 2012), Szeged : Hungary
(2012
Variable elimination for building interpreters
In this paper, we build an interpreter by reusing host language functions
instead of recoding mechanisms of function application that are already
available in the host language (the language which is used to build the
interpreter). In order to transform user-defined functions into host language
functions we use combinatory logic : lambda-abstractions are transformed into a
composition of combinators. We provide a mechanically checked proof that this
step is correct for the call-by-value strategy with imperative features.Comment: 33 page
Spinal cord gray matter segmentation using deep dilated convolutions
Gray matter (GM) tissue changes have been associated with a wide range of
neurological disorders and was also recently found relevant as a biomarker for
disability in amyotrophic lateral sclerosis. The ability to automatically
segment the GM is, therefore, an important task for modern studies of the
spinal cord. In this work, we devise a modern, simple and end-to-end fully
automated human spinal cord gray matter segmentation method using Deep
Learning, that works both on in vivo and ex vivo MRI acquisitions. We evaluate
our method against six independently developed methods on a GM segmentation
challenge and report state-of-the-art results in 8 out of 10 different
evaluation metrics as well as major network parameter reduction when compared
to the traditional medical imaging architectures such as U-Nets.Comment: 13 pages, 8 figure
Typing rule-based transformations over topological collections
Pattern-matching programming is an example of a rule-based programming style
developed in functional languages. This programming style is intensively used
in dialects of ML but is restricted to algebraic data-types. This restriction
limits the field of application. However, as shown by Giavitto and Michel at
RULE'02, case-based function definitions can be extended to more general data
structures called topological collections. We show in this paper that this
extension retains the benefits of the typed discipline of the functional
languages. More precisely, we show that topological collections and the
rule-based definition of functions associated with them fit in a polytypic
extension of mini-ML where type inference is still possible
Organic Photodiodes with an Extended Responsivity using Ultrastrong Light-Matter Coupling
In organic photodiodes (OPDs) light is absorbed by excitons, which dissociate
to generate photocurrent. Here, we demonstrate a novel type of OPD in which
light is absorbed by polaritons, hybrid light-matter states. We demonstrate
polariton OPDs operating in the ultra-strong coupling regime at visible and
infrared wavelengths. These devices can be engineered to show narrow
responsivity with a very weak angle-dependence. More importantly, they can be
tuned to operate in a spectral range outside that of the bare exciton
absorption. Remarkably, we show that the responsivity of a polariton OPD can be
pushed to near infrared wavelengths, where few organic absorbers are available,
with external quantum efficiencies exceeding those of a control OPD
Practical use of static composition of refactoring operations
6 pagesInternational audienceRefactoring tools are commonly used for remodularization tasks. Basic refactoring operations are combined to perform complex program transformations, but the resulting composed operations are rarely reused, even partially, because popular tools have few support for composition. In this paper, we recast two calculus for static composition of refactorings in a type system framework and we discuss their use for inferring useful properties. We illustrate the value of support for static composition in refactoring tools with a complex remodularization use case: a round-trip transformation between programs conforming to the Composite and Visitor patterns
- …